Skip to content

Open compact tool tabs as full-page surfaces - #2762

Merged
brsbl merged 5 commits into
bb/compact-mobile-shelves-thr_wftu7bh9ezfrom
bb/compact-tool-tabs-full-page-thr_wftu7bh9ez
Sep 1, 2026
Merged

Open compact tool tabs as full-page surfaces#2762
brsbl merged 5 commits into
bb/compact-mobile-shelves-thr_wftu7bh9ezfrom
bb/compact-tool-tabs-full-page-thr_wftu7bh9ez

Conversation

@brsbl

@brsbl brsbl commented Aug 31, 2026

Copy link
Copy Markdown
Collaborator

Human comments

What was wrong

After the right panel became a shelf, every tab remained constrained to 298.67px. Selecting New Tab could update the tab strip while leaving Info content visible, so tool surfaces did not receive a usable phone-width canvas. A newly created terminal could also lose its persisted active selection while the terminal list caught up, causing the settled tab to fall back to the shelf.

What changed

  • Let the active tab determine the compact presentation; the control that opened the panel does not independently choose shelf versus full-page.
  • Keep Info in the compact right shelf.
  • Expand every non-Info tab, including New Tab and tabs opened from it, from the right to a full-width surface above fixed app chrome.
  • Render the available production tab and preserve its full-page presentation while persisted active selection catches up.
  • Select and render New Tab's production content after its loading state settles.
  • Close the right panel when the left navigation opens so compact surfaces cannot compete for the page.
  • Replace substitute story markup and wrappers with the production shelf, panel, file preview, compact home, sidebar provider, and sidebar inset.

Compact presentation rules

The opener only selects or restores a tab. The active tab kind determines the panel geometry, and switching tabs changes that geometry immediately.

Trigger or active destination Compact result
Open or select Info (thread-info) Right shelf at 76vw. An unresolved or empty initial tab state also uses this safe fallback.
Open or select New Tab Full-page at 100vw.
Open or select Terminal, Diff, Browser, file preview, plugin page, or any other non-Info tab Full-page at 100vw.
Tap the right-panel toggle on an existing thread Reopen the current tab: Info returns as a shelf; a non-Info tab returns full-page. If no tab has resolved, Info is the default shelf destination.
Tap the right-panel toggle on Home / new-thread compose Create and select New Tab, so the panel opens full-page immediately.
Open the left navigation or close the right panel Hide the right surface; this does not create a competing shelf.

No mobile-home, navigation-feedback, provider-cache, or base shelf behavior changes in this layer.

How you verified

  • Chrome for Testing 151.0.7922.71 at 393×852 CSS px, DPR 2, against capture base 108402ee09e4a70b2df61542e7054ce73fae924a and capture head fb9902ab803b381574252195d4980b937d9405c4. The final layer is exact base 8bd201435a25ce4feb3579a5fe3b9fa84d22e4b6 and exact head 0f50516ccab03168a1730e62d05c65b512405571; it inherits the square-pane rollback without changing this layer’s full-page tab policy.
  • From the same production New Tab surface, chose Start terminal and waited for the real zsh tab and xterm subtree to settle with zero panel skeletons.
  • Base: terminal remained in the 298.67px shelf at x=94.33 and the app stopped at x=-298.68. Head: the same terminal became a 393px full-page surface at x=0 and shifted the app completely to x=-393.
  • Reproduced the active-selection race after terminal creation, then verified the final head keeps the settled production terminal full-page with no browser errors.
  • Rechecked the capture head in the branch web app on /projects/proj_m65y3vujaj/threads/thr_done, using one realistic environment-backed fixture, the same persisted AppPageHeader.tsx tab, the same populated Recent item, and the same viewport for both current-head captures. Only the active tab changed.
  • Waited for production content before capture: Info rendered environment, branch, merge base, PR, commits, and changed files; New Tab rendered file search, production actions, and a Recent file opened through the production panel flow.
  • Measured each production right-panel dialog subtree in the populated capture: Info settled at x=94.33, 298.67×852; New Tab settled at x=0, 393×852. The exact final-head control capture measured Info at 296.4×844 and New Tab at 390×844.
  • In the Info shelf, translated center-pane actions and the fixed left trigger were absent while the panel-owned Hide right panel control remained visible.
  • At the exact final head, Info exposed one on-screen sidebar control, Hide right panel, with the fixed left trigger absent from the DOM and focus order. New Tab preserved the same one-control ownership while full-page. Closing either right surface restored the left trigger; opening the left shelf left only that trigger on screen and kept the right surface closed.
  • Focus entered the panel, Tab and Shift+Tab stayed contained, the first Escape dismissed the nested tooltip without closing the tool page, and the second restored the exact right-panel trigger. The exact final-head run found zero focusable fixed-left triggers while either right surface was active.
  • The exact final-head Chrome pass had no runtime exceptions. Its only failed response was the deterministic no-environment fixture returning 409 for thread-storage/files; the rendered production empty states and panel interactions remained valid. Remote CI passed tests, typecheck, lint, both package smokes, and version gates on the exact final head. No local CI-equivalent command was run.

Populated feature evidence at the preceding head

These captures retain the realistic populated fixture from the preceding feature head. They prove the Info shelf exception and the New Tab full-page policy with production content.

Info — 76vw shelf New Tab — full page
Preceding feature head: populated production Info tab renders in the compact right shelf Preceding feature head: production New Tab renders file search, actions, and realistic Recent files full page

Exact final head: one owning control

Chrome for Testing 151.0.7922.71 captured both states in one session on /projects/proj_m65y3vujaj/threads/thr_done at 390×844 CSS px. The route, fixture, viewport, and open right-panel interaction stayed fixed; only the active Info versus New Tab destination changed. Both are production panel surfaces, and neither capture contains a loading skeleton.

Info — shelf-owned collapse New Tab — full-page collapse
Exact final PR head: production Info shelf shows only its own collapse control Exact final PR head: production New Tab full page shows only its own collapse control

Original base/head width regression

This historical pair remains the original feature regression; the current-head pair above is the final-branch evidence.

Before — tool tab constrained to shelf After — same tool tab full page
Before: production zsh tab remains constrained to the rounded right shelf After: production zsh tab remains selected and expands to a full-page compact surface

BB-Thread-ID: thr_wftu7bh9ez

AGENT GENERATED

@brsbl
brsbl force-pushed the bb/compact-tool-tabs-full-page-thr_wftu7bh9ez branch from 6456527 to 0f50516 Compare September 1, 2026 04:41
@brsbl
brsbl merged commit 688eb42 into main Sep 1, 2026
19 of 28 checks passed
@brsbl
brsbl deleted the bb/compact-tool-tabs-full-page-thr_wftu7bh9ez branch September 1, 2026 05:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant